handle Speed and Watts in garmin training center reader when the TPX element declares...
authortsteven4 <tsteven4@gmail.com>
Sat, 10 May 2014 21:12:16 +0000 (21:12 +0000)
committertsteven4 <tsteven4@gmail.com>
Sat, 10 May 2014 21:12:16 +0000 (21:12 +0000)
gpsbabel/gtrnctr.cc
gpsbabel/reference/track/kona2013.tcx [new file with mode: 0644]
gpsbabel/reference/track/kona2013~tcx.csv [new file with mode: 0644]
gpsbabel/testo.d/gtrnctr.test

index ff9e09fd06c23203f4311491f73f1ec5f5fc0a76..8684dc274a2064f2431091514dd212aa76256275 100644 (file)
@@ -121,6 +121,11 @@ static xg_tag_mapping gtc_map[] = {
   { gtc_trk_hr,   cb_cdata, "/Activities/Activity/Lap/Track/Trackpoint/HeartRateBpm" },
   { gtc_trk_cad,  cb_cdata, "/Activities/Activity/Lap/Track/Trackpoint/Cadence" },
   { gtc_trk_pwr,  cb_cdata, "/Activities/Activity/Lap/Track/Trackpoint/Extensions/ns3:TPX/ns3:Watts" },
+  // Sample from Marcelo Kittlein 5/2014 declares a default namespace with the start tag of the TPX element,
+  // and thus doesn't use prefixes.
+  // Furthermore, garmin doesnt seem to publish the relevant schema http://www.garmin.com/xmlschemas/ActivityExtension/v2,
+  // although v1 is available.
+  { gtc_trk_pwr,  cb_cdata, "/Activities/Activity/Lap/Track/Trackpoint/Extensions/TPX/Watts" },
   // It looks like Speed and Watts should be siblings, but Garmin can't get
   // their namespace act very consistent.  This works for a sample provided
   // by Laurent Desmons in 5/2013.
diff --git a/gpsbabel/reference/track/kona2013.tcx b/gpsbabel/reference/track/kona2013.tcx
new file mode 100644 (file)
index 0000000..841bf7c
--- /dev/null
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TrainingCenterDatabase
+  xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd"
+  xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
+  xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
+  xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
+  xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">
+  <Activities>
+    <Activity Sport="Biking">
+      <Id>2013-10-12T18:17:26.000Z</Id>
+      <Lap StartTime="2013-10-12T18:17:26.000Z">
+        <TotalTimeSeconds>18930.35</TotalTimeSeconds>
+        <DistanceMeters>180219.88</DistanceMeters>
+        <MaximumSpeed>18.163000106811523</MaximumSpeed>
+        <Calories>2658</Calories>
+        <AverageHeartRateBpm>
+          <Value>150</Value>
+        </AverageHeartRateBpm>
+        <MaximumHeartRateBpm>
+          <Value>179</Value>
+        </MaximumHeartRateBpm>
+        <Intensity>Active</Intensity>
+        <Cadence>92</Cadence>
+        <TriggerMethod>Manual</TriggerMethod>
+        <Track>
+          <Trackpoint>
+            <Time>2013-10-12T18:17:26.000Z</Time>
+            <Position>
+              <LatitudeDegrees>19.640107546001673</LatitudeDegrees>
+              <LongitudeDegrees>-155.99701898172498</LongitudeDegrees>
+            </Position>
+            <AltitudeMeters>16.399999618530273</AltitudeMeters>
+            <DistanceMeters>2.069999933242798</DistanceMeters>
+            <HeartRateBpm>
+              <Value>141</Value>
+            </HeartRateBpm>
+            <Cadence>31</Cadence>
+            <Extensions>
+              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+                <Speed>2.069999933242798</Speed>
+                <Watts>101</Watts>
+              </TPX>
+            </Extensions>
+          </Trackpoint>
+          <Trackpoint>
+            <Time>2013-10-12T18:17:27.000Z</Time>
+            <Position>
+              <LatitudeDegrees>19.640125399455428</LatitudeDegrees>
+              <LongitudeDegrees>-155.9969986975193</LongitudeDegrees>
+            </Position>
+            <AltitudeMeters>16.399999618530273</AltitudeMeters>
+            <DistanceMeters>4.139999866485596</DistanceMeters>
+            <HeartRateBpm>
+              <Value>141</Value>
+            </HeartRateBpm>
+            <Cadence>47</Cadence>
+            <Extensions>
+              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+                <Speed>2.069999933242798</Speed>
+                <Watts>101</Watts>
+              </TPX>
+            </Extensions>
+          </Trackpoint>
+          <Trackpoint>
+            <Time>2013-10-12T18:17:28.000Z</Time>
+            <Position>
+              <LatitudeDegrees>19.640144929289818</LatitudeDegrees>
+              <LongitudeDegrees>-155.99697078578174</LongitudeDegrees>
+            </Position>
+            <AltitudeMeters>16.399999618530273</AltitudeMeters>
+            <DistanceMeters>7.650000095367432</DistanceMeters>
+            <HeartRateBpm>
+              <Value>141</Value>
+            </HeartRateBpm>
+            <Cadence>58</Cadence>
+            <Extensions>
+              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+                <Speed>3.505000114440918</Speed>
+                <Watts>113</Watts>
+              </TPX>
+            </Extensions>
+          </Trackpoint>
+          <Trackpoint>
+            <Time>2013-10-12T18:17:29.000Z</Time>
+            <Position>
+              <LatitudeDegrees>19.64016596786678</LatitudeDegrees>
+              <LongitudeDegrees>-155.99694203585386</LongitudeDegrees>
+            </Position>
+            <AltitudeMeters>16.399999618530273</AltitudeMeters>
+            <DistanceMeters>11.449999809265137</DistanceMeters>
+            <HeartRateBpm>
+              <Value>140</Value>
+            </HeartRateBpm>
+            <Cadence>41</Cadence>
+            <Extensions>
+              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+                <Speed>3.809999942779541</Speed>
+                <Watts>0</Watts>
+              </TPX>
+            </Extensions>
+          </Trackpoint>
+          <Trackpoint>
+            <Time>2013-10-12T18:17:30.000Z</Time>
+            <Position>
+              <LatitudeDegrees>19.6401924546808</LatitudeDegrees>
+              <LongitudeDegrees>-155.99690255708992</LongitudeDegrees>
+            </Position>
+            <AltitudeMeters>16.399999618530273</AltitudeMeters>
+            <DistanceMeters>15.670000076293945</DistanceMeters>
+            <HeartRateBpm>
+              <Value>140</Value>
+            </HeartRateBpm>
+            <Cadence>57</Cadence>
+            <Extensions>
+              <TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+                <Speed>4.2129998207092285</Speed>
+                <Watts>137</Watts>
+              </TPX>
+            </Extensions>
+          </Trackpoint>
+        </Track>
+        <Extensions>
+          <LX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+            <MaxBikeCadence>158</MaxBikeCadence>
+          </LX>
+          <LX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+            <AvgSpeed>9.520000457763672</AvgSpeed>
+          </LX>
+          <LX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+            <AvgWatts>172</AvgWatts>
+          </LX>
+          <LX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
+            <MaxWatts>659</MaxWatts>
+          </LX>
+        </Extensions>
+      </Lap>
+      <Creator xsi:type="Device_t">
+        <Name>Garmin Edge 500</Name>
+        <UnitId>3840148134</UnitId>
+        <ProductID>1036</ProductID>
+        <Version>
+          <VersionMajor>3</VersionMajor>
+          <VersionMinor>0</VersionMinor>
+          <BuildMajor>0</BuildMajor>
+          <BuildMinor>0</BuildMinor>
+        </Version>
+      </Creator>
+    </Activity>
+  </Activities>
+  <Author xsi:type="Application_t">
+    <Name>Garmin Connect API</Name>
+    <Build>
+      <Version>
+        <VersionMajor>14</VersionMajor>
+        <VersionMinor>4</VersionMinor>
+        <BuildMajor>0</BuildMajor>
+        <BuildMinor>0</BuildMinor>
+      </Version>
+    </Build>
+    <LangID>en</LangID>
+    <PartNumber>006-D2449-00</PartNumber>
+  </Author>
+</TrainingCenterDatabase>
diff --git a/gpsbabel/reference/track/kona2013~tcx.csv b/gpsbabel/reference/track/kona2013~tcx.csv
new file mode 100644 (file)
index 0000000..93f9a93
--- /dev/null
@@ -0,0 +1,6 @@
+No,Latitude,Longitude,Altitude,Speed,Heartrate,Cadence,Power,Date,Time\r
+1,19.640108,-155.997019,16.4,2.07,141,31,101.0,2013/10/12,12:17:26\r
+2,19.640125,-155.996999,16.4,2.07,141,47,101.0,2013/10/12,12:17:27\r
+3,19.640145,-155.996971,16.4,3.51,141,58,113.0,2013/10/12,12:17:28\r
+4,19.640166,-155.996942,16.4,3.81,140,41,,2013/10/12,12:17:29\r
+5,19.640192,-155.996903,16.4,4.21,140,57,137.0,2013/10/12,12:17:30\r
index b14f947668a778ecb8e3201ab43ef24f0c4fdc2e..22e8d0ea0e53908395116e486cb512a9358d9641 100644 (file)
@@ -30,3 +30,8 @@ compare ${REFERENCE}/track/bike~gpx.gpx ${TMPDIR}/bike~gpx.gpx
 
 # Whack this for now.  Unicsv writes local time. 
 # compare ${REFERENCE}/track/bike~unicsv.csv ${TMPDIR}/bike~unicsv.csv
+
+# prove we recover power and speed from http://www.garmin.com/xmlschemas/ActivityExtension/v2
+gpsbabel -t -i gtrnctr,sport=Biking -f ${REFERENCE}/track/kona2013.tcx -o unicsv -F ${TMPDIR}/kona2013~tcx.csv
+compare ${REFERENCE}/track/kona2013~tcx.csv ${TMPDIR}/kona2013~tcx.csv
+